% TODO proof-reading
\subsection{Модель памяти в \ac{JVM}}


x86 и другие низкоуровневые среды используют стек для передачи аргументов и как
хранилище локальных переменных.
\ac{JVM} устроена немного иначе.

Тут есть:

\begin{itemize}
\item Массив локальных переменных (\ac{LVA}).

Используется как хранилище для аргументов функций и локальных переменных.

Инструкции вроде \INS{iload\_0} загружают значения оттуда.
\INS{istore} записывает значения туда.

В начале идут аргументы функции: начиная с 0, или с 1 
(если нулевой аргумент занят указателем \IT{this}.

Затем располагаются локальные переменные.


Каждый слот имеет размер 32 бита.

Следовательно, значения типов \IT{long} и \IT{double} занимают два слота.

\item Стек операндов (или просто \q{стек}).

Используется для вычислений и для передачи аргументов во время вызова других функций.

В отличие от низкоуровневых сред вроде x86, здесь невозможно работать со стеком
без использования инструкций, которые явно заталкивают или выталкивают значения туда/оттуда.

\item 
Куча (heap). Используется как хранилище для объектов и массивов.
\end{itemize}


Эти 3 области изолированы друг от друга.
